From 006a84274f34cc1dd383ad193d345e1bd68d334d Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 15 Mar 2002 23:27:55 +0000 Subject: [PATCH] Catch invalid frame dimensions. * io-gif.c (gif_get_frame_info): Catch invalid frame dimensions. --- gdk-pixbuf/ChangeLog | 4 ++++ gdk-pixbuf/io-gif.c | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/gdk-pixbuf/ChangeLog b/gdk-pixbuf/ChangeLog index 494890123b..ebf30d0870 100644 --- a/gdk-pixbuf/ChangeLog +++ b/gdk-pixbuf/ChangeLog @@ -1,3 +1,7 @@ +2002-03-15 Matthias Clasen + + * io-gif.c (gif_get_frame_info): Catch invalid frame dimensions. + 2002-03-13 Matthias Clasen * test-images.h: Add valid_ras_test and invalid_bmp_1. diff --git a/gdk-pixbuf/io-gif.c b/gdk-pixbuf/io-gif.c index c01a58ff07..a5cab7a469 100644 --- a/gdk-pixbuf/io-gif.c +++ b/gdk-pixbuf/io-gif.c @@ -1135,6 +1135,17 @@ gif_get_frame_info (GifContext *context) context->x_offset = LM_to_uint (buf[0], buf[1]); context->y_offset = LM_to_uint (buf[2], buf[3]); + if ((context->frame_height == 0) || (context->frame_len == 0)) { + context->state = GIF_DONE; + + g_set_error (context->error, + GDK_PIXBUF_ERROR, + GDK_PIXBUF_ERROR_CORRUPT_IMAGE, + _("GIF image contained a frame with height or width 0.")); + + return -2; + } + if (((context->frame_height + context->y_offset) > context->height) || ((context->frame_len + context->x_offset) > context->width)) { /* All frames must fit in the image bounds */ -- 2.30.2